package com.clicacao.clicacao;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.clicacao.library.ClicacaoFunctions;
import com.clicacao.library.DatabaseHandler;

public class RegisterScreen extends Activity{
	
	Button btnRegister;
	Button btnLinkToLoginScreen;
	EditText inputName, inputEmail, inputPassword;
	TextView registerErrorMsg;

	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.register_screen);
		
		//Importando as informacoes do formulario na biblioteca R
		inputName = (EditText) findViewById(R.id.registerName);
		inputEmail = (EditText) findViewById(R.id.registerEmail);
		inputPassword = (EditText) findViewById(R.id.registerPassword);
		registerErrorMsg = (TextView) findViewById(R.id.register_error);
		
		//Botao para registro do usuario no banco de dados 
		btnRegister = (Button) findViewById(R.id.btnRegister);
		btnRegister.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View view) {
				
				//Informacoes do formulario de cadastro
				
				//Requisicao assincrona de cadastro no banco de dados
				new AsyncTask<Void, Void, JSONObject>(){
					
					//Informacoes do formulario de registro
					String name = inputName.getText().toString();
					String email = inputEmail.getText().toString();
					String password = inputPassword.getText().toString();
					
					//Objeto de funcoes do Clic&Acao
					ClicacaoFunctions clicacaoFunctions = new ClicacaoFunctions();
					
					//Crio o banco de dados		
					DatabaseHandler db = new DatabaseHandler(getApplicationContext());
					
					//Objeto JSON auxiliar
					JSONObject json;

					@Override
					protected JSONObject doInBackground(Void... params) {

						json = clicacaoFunctions.registerUser(name, email, password);
						
						return json;
					}

					@Override
					protected void onPostExecute(JSONObject result) {
						super.onPostExecute(result);
						
						try{
							if(result.getString("success").equals("1")){
								registerErrorMsg.setText("");
								String res = result.getString("success");
								if(Integer.parseInt(res) == 1){
									//Usuario foi cadastrado com sucesso
									//Crio um BD SQLite para armazenar as informacoes do usuario
									//Leio as informacoes do usuario
									JSONObject  json_user = result.getJSONObject("user");
									
									//Limpa as informacoes existentes no db, se houver
									clicacaoFunctions.logoutUser(getApplicationContext());
									db.addUser(json_user.getString("name"), json_user.getString("email"), result.getString("uid"), json_user.getString("id_avatar"), json_user.getString("id_container"), json_user.getString("id_mochila"));
									
									//Apos o cadastro, fazer o login para o usuario mudando de tela
									Intent i = new Intent(RegisterScreen.this, SucessLoginScreen.class);
									RegisterScreen.this.startActivity(i);
									RegisterScreen.this.finish();
								}
							}
						}catch(JSONException e){
							//Mostra a mensagem de erro caso nao tenha conseguido cadastrar no banco de dados
							registerErrorMsg.setText("Ocorreu um erro no registro do usuario!");
						}
						
					}
					
				}.execute();
			}
		});
				
		//Botar para retornar a tela de login
		btnLinkToLoginScreen = (Button)findViewById(R.id.btnLinkToLoginScreen);
		btnLinkToLoginScreen.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View view) {

				//Aqui simplesmete voltamos para a tela de login
				Intent i = new Intent(RegisterScreen.this, LoginScreen.class);
				RegisterScreen.this.startActivity(i);
				RegisterScreen.this.finish();
			}
		});
	}	
}
